﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using CondominiosSOAP.Dominio;
using NHibernate;
using NHibernate.Criterion;

namespace CondominiosSOAP.Persistencia
{
    public class CuotaDAO : BaseDAO<SCuota, int>
    {
        public ICollection<SCuota> ListarMorosos()//ListarMorosos(String estado, DateTime fecha)
        {
            //using (ISession sesion = NHibernateHelper.AbrirSesion())
            //{
            //    ICollection<SCuota> resultado = sesion
            //            .CreateCriteria(typeof(SCuota))
            //            .Add(Restrictions.Eq("Estado", estado))
            //            .Add(Restrictions.Lt("FechaVencimiento", fecha))
            //            .List<SCuota>();
            //    return resultado;
            //}

            using (ISession sesion = NHibernateHelper.AbrirSesion())
            {
                ICollection<SCuota> resultado = sesion
                        .CreateCriteria(typeof(SCuota))
                        .Add(Restrictions.Eq("Estado", "P"))
                        //.Add(Restrictions.Lt("FechaVencimiento", DateTime.Now))
                        .List<SCuota>();
                return resultado;
            }
        }

        public ICollection<SCuota> obtenerCuotaPorViviendaPeriodo(int numVivienda, String anio, String mes)
        {
            using (ISession sesion = NHibernateHelper.AbrirSesion())
            {
                ICollection<SCuota> resultado = sesion
                        .CreateCriteria(typeof(SCuota))
                        .Add(Restrictions.Eq("Anio", anio))
                        .Add(Restrictions.Eq("Mes", mes))
                        .CreateCriteria("Vivienda")
                        .Add(Restrictions.Eq("NumVivienda", numVivienda))
                        .List<SCuota>();
                return resultado;
            }
        }

        public ICollection<SCuota> ListarTodos()
        {
            using (ISession sesion = NHibernateHelper.AbrirSesion())
            {
                ICollection<SCuota> resultado = sesion
                        .CreateCriteria(typeof(SCuota))
                        .List<SCuota>();
                return resultado;
            }
        }

        public ICollection<SCuota> CuotasPendientes(Int32 numVivienda)
        {
            using (ISession sesion = NHibernateHelper.AbrirSesion())
            {
                ICollection<SCuota> resultado = sesion
                        .CreateCriteria(typeof(SCuota))
                        .Add(Restrictions.Eq("Estado", "P"))
                        .AddOrder(Order.Asc("FechaVencimiento"))
                        .CreateCriteria("Vivienda")
                        .Add(Restrictions.Eq("NumVivienda", numVivienda))
                        .List<SCuota>();
                return resultado;
            }
        }
    }
}